home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS12.ADF / AmigaBBS / sysop (.txt) < prev    next >
AmigaBASIC Source Code  |  1986-08-05  |  9KB  |  248 lines

  1. ERASE ABCS$:DIM ABCS$(185)
  2. ON BREAK GOSUB Teflon
  3. BREAK ON
  4. yeller=0:teetse=1
  5.  
  6. Main:
  7. GOSUB Sysop
  8. CHAIN "df0:Menus",20,ALL
  9.  
  10. Modem:
  11. IF rings=0 THEN OtherModem
  12. x=FRE(0)
  13. FOR j= 1 TO LEN(a$):p$=MID$(a$,j,1)
  14. PRINT p$;:PRINT#1,p$;:NEXT j
  15. a$="":p$="":RETURN
  16.  
  17. OtherModem:
  18. x=FRE(0)
  19. FOR j= 1 TO LEN(a$):p$=MID$(a$,j,1)
  20. PRINT p$;:NEXT j
  21. a$="":p$="":RETURN
  22.  
  23. Answers:
  24. telly=0:t$="":t=0:i$="":ch$="":alter=0:IF rings=0 THEN SomeAnswers
  25. WHILE 1 AND alter<1
  26.   WHILE LOC(1)<>0
  27.     ch$=INPUT$(1,1)
  28.     equivs=ASC(ch$) AND 127:IF equivs<>1 THEN ch$=CHR$(equivs)
  29.     i$=i$+ch$:equivs=0
  30.     telly=telly+1:IF telly=78 THEN ch$=r$:telly=0
  31.     IF ch$=CHR$(8) AND LEN(i$)>=2 THEN i$=LEFT$(i$,LEN(i$)-2):telly=telly-1
  32.     IF ch$=CHR$(10) OR ch$=CHR$(13) OR ch$=r$ THEN alter=3:telly=0
  33.     a$=ch$:GOSUB Modem:ch$=""
  34.   WEND
  35.   ch$=INKEY$:i$=i$+ch$
  36.   a$=ch$:GOSUB Modem
  37.   IF ch$=CHR$(10) OR ch$=CHR$(13) OR ch$=r$ THEN telly=0:GOTO MoreAnswers
  38.   IF ch$=CHR$(8) AND LEN(i$)>=2 THEN i$=LEFT$(i$,LEN(i$)-2)
  39.   ch$="":IF LEN(i$)=0 THEN connect=PEEK (&Hbfd*&H1000+&H0):IF connect<>0 THEN okp=0:RETURN
  40. WEND
  41. IF i$<>"" THEN MoreAnswers
  42. SomeAnswers:
  43. ch$=INKEY$:i$=i$+ch$:a$=ch$:GOSUB Modem
  44. IF ch$= CHR$(10) OR ch$=CHR$(13) OR ch$=r$ THEN MoreAnswers
  45. IF ch$=CHR$(8) AND LEN(i$)>=2 THEN i$=LEFT$(i$,LEN(i$)-2)
  46. ch$=""
  47. GOTO SomeAnswers
  48. MoreAnswers:
  49. IF okp<>1 THEN RETURN
  50. IF i$="" THEN ch$="":GOTO Answers
  51. t$=i$:IF LEN(t$)>80 THEN t$=LEFT$(t$,78)+r$
  52. RETURN
  53.  
  54. SeqRead:
  55. ERASE ABCS$:DIM ABCS$(185)
  56. a$=r$+r$+"[>                                K Quits                               <]"+r$+r$:GOSUB Modem
  57. OPEN "I", #3, file$
  58. ReadSeq:
  59. j=0:L=0:k=0:Countl=0
  60. WHILE NOT EOF(3)
  61.   x=FRE(0):j=j+1
  62.   LINE INPUT#3,ABCS$(j):ABCS$(j)=ABCS$(j)+r$
  63. WEND
  64. CLOSE#3:k=j:L=0:Detect=0
  65. WHILE L<k
  66.   L=L+1:a$=ABCS$(L):GOSUB Modem
  67.   CheckSeq:
  68.   t$="":t=0:i$="":ch$="":IF rings=0 THEN SomeCheckSeq
  69.   WHILE LOC(1)<>0
  70.     ch$=INPUT$(1,1):equivs=ASC(ch$) AND 127:IF equivs<>1 THEN ch$=CHR$(equivs)
  71.     i$=i$+ch$:equivs=0:a$=ch$:GOSUB Modem
  72.   WEND
  73.   IF i$<>"" THEN MoreCheckSeq
  74.   SomeCheckSeq:
  75.   ch$=INKEY$:i$=i$+ch$:a$=ch$:GOSUB Modem
  76.   OtherCheckSeq:
  77.   IF Detect=1 GOTO MoreCheckSeq
  78.   Countl=Countl+1:IF Countl=24 THEN a$=r$+"More (y,n,c)?":GOSUB A1
  79.   IF Countl=24 THEN MenS$=UCASE$(LEFT$(t$,1)):IF MenS$="N" THEN L=k+1
  80.   IF Countl=24 AND MenS$="Y" THEN Countl=0
  81.   IF Countl=24 AND MenS$="C" THEN Detect=1
  82.   IF Countl=24 AND Detect<>1 THEN Countl=0
  83.   MoreCheckSeq:
  84.   IF i$=CHR$(75) OR i$=CHR$(107) THEN L=k+1
  85. WEND
  86. ERASE ABCS$:DIM ABCS$(185):RETURN
  87.  
  88. A1:
  89. GOSUB Modem:GOSUB Answers:RETURN
  90.  
  91. CheckConTime:
  92. Contime$=TIME$:ChEntTime$=RIGHT$(Enttime$,5):Contime$=RIGHT$(Contime$,5)
  93. Contime=VAL(Contime$):Enttime=VAL(ChEntTime$)
  94. IF Contime-Enttime>30 AND Veru$="000" THEN okp=0:RETURN
  95. IF Contime-Enttime>45 AND Veru$="007" THEN okp=0:RETURN
  96. okp=1:RETURN
  97.  
  98. Sysop:
  99. 10 IF okp<>1 AND yeller=0 THEN RETURN
  100. IF okp<>1 AND yeller=1 THEN CHAIN "df0:menus",20,ALL
  101. GOSUB CheckConTime:IF okp<>1 AND yeller=0 THEN RETURN
  102. IF okp<>1 AND yeller=1 THEN CHAIN "df0:menus",20,ALL
  103. a$=r$+"SysMain:":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
  104. IF MenS$="E" THEN EditFile
  105. IF MenS$="U" THEN yeller=1:CHAIN "df0:usermaint",,ALL
  106. IF MenS$="T" THEN Terminal
  107. IF MenS$="X" AND yeller=0 THEN RETURN
  108. IF MenS$="X" AND yeller=1 THEN CHAIN "df0:Menus",20,ALL
  109. IF MenS$="?" THEN file$="df1:SysopMenu":GOSUB SeqRead:GOTO Sysop
  110. a$=r$+"No Such Command!"+r$:GOSUB Modem:GOTO Sysop
  111.  
  112. EditFile:
  113. IF okp<>1 THEN RETURN
  114. GOSUB CheckConTime:IF okp<>1 THEN RETURN
  115. a$=r$+"FEdit:":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
  116. IF MenS$="E" THEN EditDoc
  117. IF MenS$="D" THEN DeleteDoc
  118. IF MenS$="C" THEN CreateDoc
  119. IF MenS$="X" THEN Sysop
  120. IF MenS$="?" THEN file$="df1:EdSysMenu":GOSUB SeqRead:GOTO EditFile
  121. a$=r$+"No Such Command!"+r$:GOSUB Modem:GOTO Sysop
  122.  
  123. EditDoc:
  124. a$=r$+"FileName:":GOSUB A1:file$=LEFT$(t$,LEN(t$)-1):Ddt=0:GOSUB SeqRead
  125. RequestEditDoc:
  126. a$=r$+"S- Save  I- Insert Line  D- Delete Line  L- List  R- Replace  X- Exit:":GOSUB A1
  127. MenS$=UCASE$(LEFT$(t$,1))
  128. IF MenS$="S" THEN SaveEditDoc
  129. IF MenS$="I" THEN InsertEditDoc
  130. IF MenS$="D" THEN DeleteEditDoc
  131. IF MenS$="L" THEN ListEditDoc
  132. IF MenS$="R" THEN ReplaceEditDoc
  133. IF MenS$="X" THEN EditFile
  134. a$=r$+"No Such Command!":GOTO RequestEditDoc
  135.  
  136. SaveEditDoc:
  137. OPEN "O",#4, file$
  138. FOR j=1 TO Ddt
  139. PRINT#4,ABCS$(j)
  140. NEXT j
  141. CLOSE#4
  142. GOTO Sysop
  143.  
  144. InsertEditDoc:
  145. IF Ddt>=199 THEN a$=r$+"No room to insert.":GOSUB Modem:GOTO RequestEditDoc
  146. a$=r$+"Insert before which line:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN RequestEditDoc
  147. instln=VAL(t$)
  148. FOR j=Ddt TO instln STEP -1
  149. ABCS$(j+1)=ABCS$(j)
  150. NEXT j
  151. ABCS$(instln)="    "+r$:Ddt=Ddt+1
  152. GOTO RequestEditDoc
  153.  
  154. DeleteEditDoc:
  155. a$=r$+"Delete starting which line:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN RequestEditDoc
  156. stln=VAL(t$):IF stln<1 OR stln>Ddt THEN RequestEditDoc
  157. a$=r$+"Ending which line:":GOSUB A1:endtln=VAL(t$):IF endtln>Ddt THEN endtln=Ddt
  158. IF stln>endtln THEN SWAP stln,endtln
  159. a$=r$+"Delete from"+STR$(stln)+" to"+STR$(endtln)+r$+"Are you sure? (Y or N):":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
  160. IF MenS$="N" THEN RequestEditDoc
  161. FOR j=endtln+1 TO Ddt
  162. ABCS$(j-((endtln+1)-stln))=ABCS$(j)
  163. NEXT j
  164. Ddt=Ddt-((endtln+1)-stln)
  165. FOR j=Ddt TO Ddt+((endtln+1)-stln)
  166. ABCS$(j)="    "+r$
  167. NEXT j
  168. GOTO RequestEditDoc
  169.  
  170. ListEditDoc:
  171. a$=r$+"Line to start at:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN RequestEditDoc
  172. stln=VAL(t$):IF stln<1 OR stln>Ddt THEN RequestEditDoc
  173. a$=r$+"Line to stop at:":GOSUB A1:endtln=VAL(t$)+3:IF endtln<stln THEN RequestEditDoc
  174. IF endtln>Ddt THEN endtln=Ddt
  175. FOR L=stln TO endtln
  176. a$=r$+STR$(L)+":"+ABCS$(L):GOSUB Modem
  177. NEXT L
  178. GOTO RequestEditDoc
  179.  
  180. ReplaceEditDoc:
  181. a$=r$+"Replace which line:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN RequestEditDoc
  182. rplnn=VAL(t$):IF rplnn<1 OR rplnn>Ddt THEN RequestEditDoc
  183. a$=r$+"Replace:"+ABCS$(rplnn)+"With:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN RequestEditDoc
  184. Temprep$=t$
  185. a$=r$+"Replace:"+ABCS$(rplnn)+"With:"+Temprep$+"(Y or N):":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
  186. IF MenS$="Y" THEN ABCS$(rplnn)=Temprep$
  187. GOTO RequestEditDoc
  188.  
  189. DeleteDoc:
  190. a$=r$+"File to delete:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN EditFile
  191. file$=LEFT$(t$,LEN(t$)-1)
  192. a$=r$+"Delete "+file$+r$+"Are you Sure? (Y or N):":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
  193. IF MenS$="Y" THEN KILL file$
  194. GOTO EditFile
  195.  
  196. CreateDoc:
  197. a$=r$+"Filename:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN EditFile
  198. file$=LEFT$(t$,LEN(t$)-1)
  199. ABCS$(1)="Time:"+TIME$+" "+"Date:"+DATE$+r$
  200. a$=r$+"Subject:":GOSUB A1:Subject$=LEFT$(t$,LEN(t$)-1)
  201. IF LEN(Subject$)>30 THEN Subject$=LEFT$(Subject$,30)
  202. ABCS$(2)="Name:"+LEFT$(Name1$,LEN(Name1$)-1)+LEFT$(Name2$,LEN(Name2$)-1)+" Subject:"+Subject$+" UserID:"+UserID$
  203. ABCS$(3)=r$:Dzz=0:Ddt=3
  204. a$=r$+"Enter Text: [Max. 197 lines] /EX to Exit"+r$:GOSUB Modem
  205. WHILE Dzz<1
  206.   Ddt=Ddt+1
  207.   a$=r$+STR$(Ddt-3)+":":GOSUB A1:ABCS$(Ddt)=t$
  208.   IF UCASE$(LEFT$(t$,3))="/EX" THEN Dzz=1:Ddt=Ddt-1
  209.   IF Ddt=199 THEN a$=r$+"Last Line!":GOSUB Modem
  210.   IF Ddt=200 THEN Dzz=1
  211. WEND
  212. QueryCreateFile:
  213. a$=r$+"S- Save  E- Edit  C- Continue:":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
  214. IF MenS$="S" THEN SaveEditDoc
  215. IF MenS$="E" THEN EditFile
  216. IF MenS$="C" THEN ContinueFile
  217. a$=r$+"No such command.":GOSUB Modem:GOTO QueryCreateFile
  218.  
  219. ContinueFile:
  220. IF Ddt>198 THEN a$=r$+"No Room!":GOTO QueryCreateFile
  221. Dzz=0
  222. a$=r$+"Enter Text: [Max. 197 lines] /EX to Exit"+r$:GOSUB Modem
  223. WHILE Dzz<1
  224.   Ddt=Ddt+1
  225.   a$=STR$(Ddt-3)+":":GOSUB A1:ABCS$(Ddt)=t$
  226.   IF UCASE$(LEFT$(t$,3))="/EX" THEN Dzz=1:Ddt=Ddt-1
  227.   IF Ddt=199 THEN a$=r$+"Last Line!":GOSUB Modem
  228.   IF Ddt=200 THEN Dzz=1
  229. WEND
  230. GOTO QueryCreateFile
  231.  
  232. Terminal:
  233. ltomr=0:teetse=0:a$=r$+"\ to exit"+r$:GOSUB Modem
  234. WHILE ltomr<1
  235.   WHILE LOC(1)<>0
  236.     PRINT INPUT$(1,1);
  237.   WEND
  238.   i$=INKEY$:IF i$="\" THEN ltomr=3
  239.   IF i$<>"" THEN PRINT #1,i$;
  240. WEND
  241. GOTO Sysop
  242.  
  243. Teflon:
  244. IF teetse=1 THEN a$=r$+"Sorry, not allowed.":GOSUB Modem:RETURN
  245. IF teetse=0 THEN ltomr=1:teetse=1:RETURN
  246. RETURN
  247.  
  248.